// BOM 相关类型定义
export interface BomAttributeItem {
  propertyName: string;
  propertyValue: string | number | null;
  sort?: number;
}

export interface BomRecordApi {
  id: string;
  classId?: string;
  className?: string; // 物料分类 (名称或编码)
  productType?: string; // 产品类型
  invCode?: string; // 物料编码
  invName?: string; // 物料名称（若有）
  name?: string; // BOM 名称
  bomType?: string; // product / package / ...
  attributes?: BomAttributeItem[];
  feeModel?: 'fixed' | 'count' | string; // 费用模式
  feeAmount?: string | number; // 金额或单价
  createTime?: string; // yyyy-MM-dd HH:mm:ss
  updateTime?: string;
}

export interface PageResponse<T> {
  records: T[];
  total: number;
  size: number;
  current: number;
  pages: number;
}

export interface ApiEnvelope<T> { code: number; data: T; msg: string; }

export interface BomSearchParams {
  page?: number;
  pageSize?: number;
  invCode?: string;
  invName?: string;
  className?: string; // 物料分类
  productType?: string; // 产品类型
}

// 新增 BOM 请求体结构
export interface BomCreatePayload {
  classId: string | number; // 物料分类 Id
  className: string;        // 物料分类名称（如 标贴 / 纸箱）
  productType: string;      // 产品类型
  name: string;             // 物料属性拼接得到的名称
  bomType: string;          // product | package
  attributes: BomAttributeItem[]; // 属性集合
  feeModel: 'fixed' | 'count';    // 费用模式
  feeAmount: number;              // 金额或单价（统一 number）
}

// 编辑 BOM 请求体结构（与新增基本一致，增加 id；部分字段可能后端允许不修改，可做 Partial）
export interface BomEditPayload extends Partial<BomCreatePayload> {
  id: string;                     // 目标 BOM 的唯一标识
  // feeAmount 仍保持 number；若前端未改动可不传，由后端保持原值
  feeAmount?: number;
}
